// #include <stdio.h>
// #include <stdlib.h>
//
// #include "Address Book(SeqList)/SeqList.h"
//
// typedef struct Node {
//     int data;
//     struct Node* next;
// } Node, *LinkList;
//
// Node* NewNode(int x) {
//     Node* newNode = (Node*)malloc(sizeof(Node));
//     if (!newNode) {
//         perror("malloc failed");
//         exit(EXIT_FAILURE);
//     }
//     newNode->data = x;
//     newNode->next = NULL;
//     return newNode;
// }
//
// void InsertBack(LinkList* L, int x) {
//     Node* newNode = NewNode(x);
//     if (*L == NULL) {
//         *L = newNode;
//     } else {
//         Node* p = *L;
//         while (p->next != NULL) {
//             p = p->next;
//         }
//         p->next = newNode;
//     }
// }
//
// void printList(LinkList L) {
//     Node* p = L;
//     while (p != NULL) {
//         printf("%d ", p->data);
//         p = p->next;
//     }
//     printf("\n");
// }
//
// int Length(LinkList L) {
//     int len = 0;
//     Node* p = L;
//     while (p != NULL) {
//         len++;
//         p = p->next;
//     }
//     return len;
// }
//
// void Move(LinkList* L, int k) {
//     if (*L == NULL || (*L)->next == NULL) return;
//
//     int len = Length(*L);
//     k = k % len;
//     if (k == 0) return;
//
//     Node* new_tail = *L;
//     for (int i = 1; i < len - k; i++) {
//         new_tail = new_tail->next;
//     }
//
//     Node* old_tail = new_tail;
//     while (old_tail->next != NULL) {
//         old_tail = old_tail->next;
//     }
//
//     old_tail->next = *L;
//     *L = new_tail->next;
//     new_tail->next = NULL;
// }
//
// void destroyList(LinkList* L) {
//     Node* p = *L;
//     while (p != NULL) {
//         Node* temp = p;
//         p = p->next;
//         free(temp);
//     }
//     *L = NULL;
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     LinkList list = NULL;
//
//     for (int i = 1; i <= 5; i++) {
//         InsertBack(&list, i*10);
//     }
//
//     printf("原链表: ");
//     printList(list); // 10 20 30 40 50
//
//     Move(&list, 2);
//     printf("右移2位: ");
//     printList(list); // 40 50 10 20 30
//
//     destroyList(&list);
//     return 0;
// }